package cn.tta.handler;

import cn.tta.common.constant.MessageConstant;
import cn.tta.common.result.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;


@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {

    /**
     *捕获业务异常
     * @param e
     * @return
     */
    @ExceptionHandler(Exception.class)
    public Result exceptionHandler(Exception e) {
        log.info("异常信息:{}",e.getMessage());

        // 这个错误通常发生在数据库中有一个唯一性约束（unique constraint）或索引（index），用于确保用户名在表中的唯一性。当尝试插入一个已经存在的值时，数据库会拒绝操作并报告重复键错误。
        // Duplicate entry 'yinizi' for key 'idx_username'
        String message = e.getMessage();
        if (message.contains("Duplicate entry")) {
            message = message.substring(message.indexOf("Duplicate entry"));
            String[] split = message.split(" ");
            String name = split[2];
            return Result.error(name + MessageConstant.ALREADY_EXISTS);
        }

        return Result.error(e.getMessage());
    }
}
